package com.cskaoyan.javase.array._4operation._3curd;
/**
 * String比较对象相等
 *      如果用"=="比较的是地址,比较的不是字符串内容
 * 比较String字符串的内容,应该用方法equals
 *      用某一个String引用调用该方法,传入一个String对象
 *      用于比较两个字符串的内容
 *      只要字符串的内容一致,都会返回true
 *
 * 补充:
 *      equals方法在比较两个字符串内容时,方法的调用者是一个字符串对象
 *      方法传入的实参也是一个字符串对象
 *      表示这两个字符串对象比较字符串内容
 *
 *      equals方法具有对称性
 *      a.equals(b)和b.equals(a)效果是一样的
 *      使用equals方法时:
 *          由于对称性,一定要优先考虑一个不等于null的引用去调用方法
 *          避免空指针异常!
 *
 * @since 11:03
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    public static void main(String[] args) {
        /*String str = "hello";
        String str2 = "hello";
        // true 意味着str和str2指向同一个对象
        System.out.println(str == str2);
        String str3 = new String("hello");
        // false 意味着str和str3指向的不是同一个对象
        System.out.println(str == str3);

        System.out.println("-------------------");
        System.out.println(str.equals(str2));
        System.out.println(str.equals(str3));
        System.out.println(str2.equals(str3));*/

        String str = null;
        // System.out.println(str.equals("abc"));
        // "abc"是一个常量,一定不是null,应该用它来调用equals方法,避免空指针异常
        System.out.println("abc".equals(str));
    }
}
